<?php
/**
 * Created by PhpStorm.
 * User: s.utkin
 * Date: 30.04.2015
 * Time: 18:09
 */

namespace Resources;


use PublishedResources\PublishedPackagesConfig;
use Resources\Config\PackagesConfig;

class File {
	const TYPE_CSS = 'css';
	const TYPE_JS = 'js';
	const TYPE_FILES = 'files';

	/**
	 * Базовый URI опубликованных файлов
	 *
	 * @var string
	 */
	public static $baseUri = '/resources';

	/**
	 * Возвращает URI опубликованного файла
	 *
	 * @param string $file относительный путь к файлу (например: 'js/common.js')
	 * @param string $package имя пакета
	 * @param string $scope
	 * @param bool $returnRelativePath возвращать ли относительный uri
	 * @return string
	 * @throws \Exception
	 */
	public static function getUrl($file, $package, $scope = null, $returnRelativePath = false)
	{
		$prefix = $returnRelativePath ? '' : static::$baseUri;

		if (!isset(PackagesConfig::$config[$package]) && (substr($package, 0, 5) != 'group')) {
			throw new \Exception("Package $package not found in PackagesConfig.");
		}

		$version = 1;

		if ($scope == null) {
			if (isset(PublishedPackagesConfig::$config[$package])) {
				$version = (int)PublishedPackagesConfig::$config[$package];
			}

			$scope = $package;
		} elseif (isset(PublishedPackagesConfig::$groups[$scope])) {
			$version = (int)PublishedPackagesConfig::$groups[$scope];
		}

		return $prefix . '/' . $scope . $version . '/' . $file;
	}
} 